home *** CD-ROM | disk | FTP | other *** search
- DECLARE SUB Yardim ()
- DECLARE SUB Bekle ()
- DECLARE SUB Bellek (A%)
- DECLARE SUB Bitir ()
- DECLARE SUB Cizgi ()
- DECLARE SUB DusmanCiz ()
- DECLARE SUB Hata (A$)
- DECLARE SUB iptal (A%)
- DECLARE SUB isimal ()
- DECLARE SUB Oyna ()
- DECLARE SUB Puanlist ()
- DECLARE FUNCTION RenkKontrol% (Dusyer%())
- DECLARE FUNCTION Tus% ()
- DECLARE SUB Tusunut ()
- DEFINT A-Z
- DECLARE FUNCTION GetCS% ()
- DECLARE FUNCTION GetOF% ()
- DECLARE SUB Resmet (BYVAL B%, C%)
- DECLARE SUB Resim ()
- DECLARE SUB Font ()
- DECLARE SUB Dinle (BYVAL Segm%)
- DECLARE SUB Dinle2 (BYVAL Segm%)
- DECLARE SUB YavasKapa ()
- DECLARE SUB Kapa ()
- '===========================================================================
- 'Sabitler
- CONST Zemin = 2, Kutu = 223, Cizim = 254, Boya = 40, icKutu = 222
- CONST Dusman = 253, Punto = 4
- CONST OyunHizi = 1
- '===========================================================================
- 'Deºiƒkenler
- TYPE RegTypeX
- Ax AS INTEGER
- Bx AS INTEGER
- Cx AS INTEGER
- Dx AS INTEGER
- bp AS INTEGER
- si AS INTEGER
- di AS INTEGER
- Flags AS INTEGER
- Ds AS INTEGER
- Es AS INTEGER
- END TYPE
- DIM SHARED yap AS RegTypeX
- DIM SHARED Yatay, Dikey, Yatay1, Dikey1
- DIM SHARED Aktif, Yol$, Zaman#
- DIM SHARED Puan(10), Puan$(10)
- DIM SHARED Dusyer(10), Hayat, Dudak(330)
- DIM SHARED Player%
- '===========================================================================
- 'Program
- CALL Bellek(2720): Player% = yap.Ax
- SCREEN 13
- ON ERROR GOTO Hatalar
- Resim
- Font
- DO
- Dinle Player%
- Puanlist
- Kapa
- Dinle2 Player%
- Oyna
- isimal
- Kapa
- LOOP
-
- Hatalar:
- Hata ("Disketin korumasìnì kaldìrìn...")
-
- SUB Bekle
- DEF SEG = 0
- IF PEEK(1052) > PEEK(1050) + 15 THEN POKE 1050, PEEK(1052)
- z = PEEK(1132)
- DO
- IF PEEK(1132) - z = OyunHizi OR z > PEEK(1132) THEN EXIT DO
- LOOP
- END SUB
-
- SUB Bellek (A%)
- Bos& = SETMEM(-1 * (A% + 17))
- yap.Ax = &H4800: yap.Bx = A% \ 16 + 1
- CALL Interruptx(&H21, yap, yap)
- IF (yap.Flags AND 1) THEN PRINT "Hata": END
- END SUB
-
- SUB Bitir
- CLS
- YavasKapa
- Yer = -1
- FOR i = 182 TO 13 STEP -1
- Yer = Yer + 1: B% = 800 + (Yer) * 180: C% = i * 320
- CALL Resmet(B%, C%): IF i / 10 = i \ 10 THEN Bekle
- NEXT
- FOR i = 1 TO 30: Bekle: NEXT
- Kapa
- END
- END SUB
-
- SUB Cizgi
- SELECT CASE POINT(Yatay, Dikey)
-
- CASE Zemin, Cizim, Punto
- PSET (Yatay1, Dikey1), Punto
- IF Aktif = 0 THEN Yol$ = Yol$ + CHR$(Yatay1) + CHR$(Dikey1)
- IF POINT(Yatay, Dikey) = Zemin THEN Aktif = 1
-
- CASE icKutu
- PSET (Yatay1, Dikey1), icKutu
- IF Aktif = 1 THEN
- iptal (icKutu)
- PAINT (Dusyer(1), Dusyer(2)), Kutu, icKutu
- PAINT (12, 12), Boya, Kutu
- PAINT (Dusyer(1), Dusyer(2)), Zemin, Boya
- LINE (11, 11)-(195, 185), Zemin, B
- PAINT (12, 12), icKutu, Zemin
- LINE (11, 11)-(195, 185), Kutu, B
- Puan(0) = 0
- FOR i = 13 TO 182
- B% = 800 + (i - 13) * 180: C% = i * 320
- CALL Resmet(B%, C%): Puan(0) = Puan(0) + C%
- NEXT
- IF POINT(Yatay, Dikey) <> icKutu THEN
- FOR i = Dusyer(1) TO 193
- IF POINT(i, Dusyer(2)) = icKutu THEN Yatay = i: Dikey = Dusyer(2): EXIT FOR
- NEXT
- END IF
- Tusunut
- END IF
- CASE ELSE
- Yatay = Yatay1: Dikey = Dikey1
-
- END SELECT
-
- IF Aktif = 1 THEN
- Yol$ = Yol$ + CHR$(Yatay) + CHR$(Dikey)
- PSET (Yatay, Dikey), Cizim
- ELSE
- PSET (Yatay, Dikey), 0
- END IF
- Yatay1 = Yatay: Dikey1 = Dikey
- END SUB
-
- SUB DusmanCiz
- IF Aktif = 1 THEN
- IF Yatay < Dusyer(1) + 2 THEN Dusyer(3) = -2: ELSE Dusyer(3) = 2
- IF Dikey < Dusyer(2) + 2 THEN Dusyer(4) = -2: ELSE Dusyer(4) = 2
- END IF
-
- A = RND * 164
- IF A < 2 THEN Dusyer(3) = Dusyer(3) * -1: Dusyer(4) = Dusyer(4) * -1
- Dusyer(6) = Dusyer(1): Dusyer(7) = Dusyer(2)
- A = RND * 11
- IF A < 5 THEN Dusyer(1) = Dusyer(1) + Dusyer(3) ELSE Dusyer(2) = Dusyer(2) + Dusyer(4)
-
- Renk = RenkKontrol(Dusyer())
-
- IF Renk <> -1 THEN
- LINE (Dusyer(6), Dusyer(7))-(Dusyer(6) + 22, Dusyer(7) + 13), Zemin, BF
- PUT (Dusyer(1), Dusyer(2)), Dudak, PSET: Bekle
- ELSE
- Dusyer(3) = Dusyer(3) * -1: Dusyer(4) = Dusyer(4) * -1
- Dusyer(1) = Dusyer(6): Dusyer(2) = Dusyer(7)
- END IF
-
- END SUB
-
- SUB Hata (A$)
- COLOR 40: CLS : PRINT A$: YavasKapa: FOR i = 1 TO 30: Bekle: NEXT: Kapa
- END
- END SUB
-
- SUB iptal (A%)
- FOR i = LEN(Yol$) TO 2 STEP -2
- PSET (ASC(MID$(Yol$, i - 1, 1)), ASC(MID$(Yol$, i, 1))), A%
- NEXT
- Yol$ = "": Aktif = 0
- END SUB
-
- SUB isimal
- IF Puan(10) >= Puan(0) THEN EXIT SUB
- Puan$(0) = SPACE$(25)
- B$ = STR$(Puan(0)): MID$(Puan$((0)), 26 - LEN(B$), LEN(B$)) = B$
-
- FOR i = 1 TO 10
- FOR n = 0 TO 9
- B = VAL(RIGHT$(Puan$(i), 5)): C = VAL(RIGHT$(Puan$(n), 5))
- IF C < B THEN SWAP Puan$(i), Puan$(n)
- NEXT: NEXT
-
- COLOR 4: CLS
- FOR i = 0 TO 9
- IF VAL(RIGHT$(Puan$(i), 5)) = Puan(0) THEN isimY = i
- LOCATE , 2: PRINT i + 1; : LOCATE , 7: PRINT Puan$(i)
- NEXT
-
- Y = 1
- DO
- COLOR 40: LOCATE isimY + 1, 7: PRINT Puan$(isimY); : COLOR 8: LOCATE , 6 + Y: PRINT "■"
- A$ = INKEY$
- IF A$ <> "" AND LEN(A$) = 1 THEN
- LOCATE isimY + 1, 6 + Y: PRINT " "
- IF ASC(A$) = 8 AND Y > 1 THEN MID$(Puan$(isimY), Y, 1) = " ": Y = Y - 1
- IF ASC(A$) = 27 THEN EXIT SUB
- IF ASC(A$) = 13 THEN EXIT DO
- IF ASC(A$) > 27 THEN MID$(Puan$(isimY), Y, 1) = A$: Y = Y + 1: IF Y > 18 THEN Y = 18
- END IF
- LOOP
-
- A$ = "": FOR i = 1 TO 10: A$ = A$ + Puan$(i - 1): NEXT
- FOR i = 1 TO 250
- Kontrol# = Kontrol# + i * ASC(MID$(A$, i, 1))
- NEXT
- PUT #1, 1, A$: PUT #1, , Kontrol#
- END SUB
-
- SUB Oyna
- COLOR 4: CLS
- FOR Y = 66 TO 79
- FOR i = 76 TO 98
- DEF SEG = GetCS: B = PEEK(GetOF + 801 + i + Y * 180)
- DEF SEG = &HA000: POKE Y * 320 + i, B
- NEXT: NEXT
- GET (76, 66)-(98, 79), Dudak
- LINE (11, 11)-(194, 184), Kutu, B: LINE (12, 12)-(193, 183), Zemin, BF: LINE (13, 13)-(192, 182), icKutu, B
- COLOR 1: LOCATE 2, 26: PRINT "Puan:": LOCATE 3, 26: PRINT "Oyuncu :": LOCATE 4, 26: PRINT "Süre:": LOCATE 7, 26: PRINT "Müzik:": LOCATE 10, 26: PRINT "Grafik:"
- COLOR 8: LOCATE 11, 26: PRINT "Gürol DEMÿR": LOCATE 8, 26: PRINT "M.Doºan ÖZDEMÿR"
- Yatay1 = 13: Dikey1 = 13: Yatay = 13: Dikey = 13
- Dusyer(1) = 50: Dusyer(2) = 50: Dusyer(3) = 3: Dusyer(4) = 3: Hayat = 10
- Puan(0) = 0
- Zaman# = FIX(TIMER) + 600
-
- DO
- IF Tus THEN EXIT DO
- Cizgi
- DusmanCiz
- COLOR 8: LOCATE 2, 31: PRINT USING "##,###"; Puan(0)
- LOCATE , 34: PRINT Hayat: IF Hayat = 0 THEN EXIT DO
- IF Zaman# - FIX(TIMER) > 600 THEN Zaman# = Zaman# - 86400
- LOCATE , 33: PRINT Zaman# - FIX(TIMER): IF Zaman# - FIX(TIMER) <= 0 THEN EXIT DO
- LOOP
- END SUB
-
- SUB Puanlist
- CLOSE #1: OPEN "KESMECE.SCR" FOR BINARY AS #1
- Basla:
- Kontrol# = 0
- COLOR 4: CLS : LOCATE , 12: PRINT "Puan Listesi"
- IF LOF(1) = 0 THEN A$ = SPACE$(250): PUT #1, 1, A$: Kontro# = 1004000: PUT #1, , Kontro#
- A$ = SPACE$(250): GET #1, 1, A$
- FOR i = 1 TO 250
- Kontrol# = Kontrol# + i * ASC(MID$(A$, i, 1))
- NEXT
- GET #1, , Kontro#
- IF Kontro# <> Kontrol# THEN Hata ("Puan listesi karìƒtìrìlmìƒ !!!")
- Yer = 0
- FOR i = 1 TO 250 STEP 25
- A$ = SPACE$(25): GET #1, i, A$: Yer = Yer + 1
- LOCATE , 2: PRINT Yer; : LOCATE , 7: PRINT A$
- Puan(Yer) = VAL(RIGHT$(A$, 5)): Puan$(Yer) = A$
- NEXT
- LOCATE , 6: PRINT "Esc)Bitir Enter)Oyna F1)Yardìm"
- KEY 1, CHR$(255)
- DO
- DO: A$ = INKEY$: LOOP UNTIL A$ <> ""
- IF ASC(A$) = 255 THEN Yardim: GOTO Basla
- IF ASC(A$) = 27 THEN Bitir
- IF ASC(A$) = 13 THEN EXIT DO
- LOOP
- END SUB
-
- FUNCTION RenkKontrol (Dusyer())
- FOR i = Dusyer(1) TO Dusyer(1) + 22
- FOR Y = Dusyer(2) TO Dusyer(2) + 13
- SELECT CASE POINT(i, Y)
- CASE Cizim, Punto
- Hayat = Hayat - 1
- Yatay1 = ASC(Yol$)
- Dikey1 = ASC(MID$(Yol$, 2, 1))
- Yatay = ASC(Yol$)
- Dikey = ASC(MID$(Yol$, 2, 1))
- iptal (Zemin)
- PSET (Yatay, Dikey), 0
- RenkKontrol = -1
- Tusunut
- EXIT FUNCTION
- CASE icKutu, 0
- RenkKontrol = -1: EXIT FUNCTION
- END SELECT
- NEXT: NEXT
- END FUNCTION
-
- FUNCTION Tus
- A$ = INKEY$
- IF A$ = "" THEN EXIT FUNCTION
- IF ASC(A$) = 27 THEN Tus = -1: EXIT FUNCTION
- IF LEN(A$) = 2 THEN
- z = ASC(RIGHT$(A$, 1))
- SELECT CASE z
- CASE 75
- IF Yatay > 13 THEN Yatay = Yatay - 1
- CASE 77
- IF Yatay < 192 THEN Yatay = Yatay + 1
- CASE 72
- IF Dikey > 13 THEN Dikey = Dikey - 1
- CASE 80
- IF Dikey < 182 THEN Dikey = Dikey + 1
- END SELECT
- END IF
- END FUNCTION
-
- SUB Tusunut
- DEF SEG = 0: POKE 1050, PEEK(1052)
- FOR i = 1 TO 15: Bekle: NEXT
- DEF SEG = 0: POKE 1050, PEEK(1052)
- END SUB
-
- SUB Yardim
- COLOR 40: CLS
- PRINT " Oyuna baƒlayìnca karƒìnìza bir"
- PRINT "dikdörtgen gelir. Bu kutunun içinde"
- PRINT "gizli bir resim vardìr.Ortadaki dudak"
- PRINT "bu resmi korumaktadìr. Siz ise sol üst"
- PRINT "köƒedeki hareketli nokta ile bu resmi"
- PRINT "açmaya çalìƒacaksìnìz. Sìnìr çizgileri"
- PRINT "içinde emniyette olursunuz. Dudak sizi"
- PRINT "resmin içinde yakalarsa bir hakkìnìz"
- PRINT "yanar. Cursor hareket tuƒlarì ile nokta"
- PRINT "hareket eder. Resmin içine girip tekrar"
- PRINT "kenara kaçmalìsìnìz....ÿyi eºlenceler..."
- Bekle
- DO: LOOP UNTIL INKEY$ <> ""
- END SUB
-
-